#pragma once

#include <typedef.h>
#include <work_queue_run.hpp>

class WorkQueue
{
public:
	WorkQueue(int priority);
	~WorkQueue();

	virtual void Start(void* arg = nullptr);

	friend class WorkQueueRun;

protected:
	virtual void RunImpl(void* arg) = 0;

protected:
	int m_Priority;
	uint32_t m_Tk;

private:
	void* m_Arg;
};